package cn.hnc.checkapi.service;

import cn.hnc.checkapi.bean.ConfigType;
import cn.hnc.checkapi.bean.User;
import cn.hnc.checkapi.bean.UserAction;
import cn.hnc.checkapi.repository.ConfigTypeRepository;
import cn.hnc.checkapi.repository.UserActionRepository;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class ConfigTypeService {
   @Autowired
   private ConfigTypeRepository configTypeRepository;
   @Autowired
   private UserActionRepository userActionRepository;

   public List selConfigType() {
      return this.configTypeRepository.findAll();
   }

   public List selConfigTypeBy(String configType, String value) {
      return this.configTypeRepository.findConfigTypeBy(configType, value);
   }

   public List selConfigTypeById(String configType, String value) {
      return this.configTypeRepository.findConfigTypeById(configType, value);
   }

   public String getChecksum() {
      return this.configTypeRepository.getChecksum();
   }

   @Transactional
   public void addConfigType(ConfigType configType, User user, String ip) {
      Date date = new Date();
      this.configTypeRepository.save(configType);
      DateTime date1 = DateUtil.date();
      this.configTypeRepository.updateChecksum(date1.toString());
      SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
      UserAction userAction = new UserAction();
      userAction.setUserId(user.getId());
      userAction.setAction("新增");
      userAction.setActionTime(simpleDateFormat.format(date));
      userAction.setConfigTypeId(configType.getId());
      userAction.setIp(ip);
      this.userActionRepository.save(userAction);
   }

   @Transactional
   public int updateConfigType(ConfigType configType, User user, String ip) {
      Date date = new Date();
      SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
      UserAction userAction = new UserAction();
      userAction.setUserId(user.getId());
      userAction.setAction("修改");
      userAction.setActionTime(simpleDateFormat.format(date));
      userAction.setConfigTypeId(configType.getId());
      userAction.setIp(ip);
      this.userActionRepository.save(userAction);
      DateTime date1 = DateUtil.date();
      this.configTypeRepository.updateChecksum(date1.toString());
      return this.configTypeRepository.updateConfigType(configType.getId(), configType.getConfigType(), configType.getValue());
   }

   @Transactional
   public int delConfigType(ConfigType configType, User user, String ip) {
      Date date = new Date();
      SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
      UserAction userAction = new UserAction();
      userAction.setUserId(user.getId());
      userAction.setAction("删除");
      userAction.setActionTime(simpleDateFormat.format(date));
      userAction.setConfigTypeId(configType.getId());
      userAction.setIp(ip);
      this.userActionRepository.save(userAction);
      DateTime date1 = DateUtil.date();
      this.configTypeRepository.updateChecksum(date1.toString());
      return this.configTypeRepository.delConfigType(configType.getId());
   }
}
